import java.util.ArrayList;
import java.util.List;

/**
 * @author zhaoren
 * @version 1.0
 * @description 抽象通知者接口/抽象类，因为有可能是不同的通知者
 * @date 2020/7/31 10:32
 **/
public abstract class Notifier {


    /**
     * 观察者的当前状态
     */
    private String status;

    private List<Observer> observers = new ArrayList<Observer>(1000);

    /**
     * 添加通知的观察者
     * @param observer
     */
    public void  addObserver(Observer observer){
        observers.add(observer);
    }

    /**
     * 删除已添加的观察者
     * @param observer
     */
    public void detachObserver(Observer observer){
        observers.remove(observer);
    };

    /**
     * 通知所有的观察者，各自的观察者会按照自己的监听主题进行具体的更新操作
     */
    public void Notify(){
        observers.forEach(x -> {x.update();});
    };

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public List<Observer> getObservers() {
        return observers;
    }

    public void setObservers(List<Observer> observers) {
        this.observers = observers;
    }


}
